package no.sachmuld.methodcombination.api.reflection.component;

import no.sachmuld.methodcombination.api.BehaviourChain;

import java.lang.reflect.Method;

/**
 *
 */
public interface MethodCombination <B, R> {

    MethodCombination<B, R> build(Class behaviourClass, Method targetMethod);
    void                    validate(BehaviourMethodValidator behaviourMethodValidator);
    R                       execute(Object targetObject, BehaviourChain<? extends B> behaviourChain, Object... parameters);

}
